iT邦幫忙

2024 iThome 鐵人賽

DAY 1
0

每天的專案會同步到 GitLab 上,可以前往 GitLab 查看。
有興趣的朋友歡迎留言 or 來信討論,我的信箱是 nickchen1998@gmail.com

本日大綱

  • 主題簡介
  • RAG 簡介
  • LangChain 簡介
  • OPENAI API KEY 申請
  • Pydantic-Settings

主題簡介

這次鐵人賽要來和大家分享的是最近火紅的生成式 AI,我們主要會使用 LangChain 這個套件來對一些大型語言模型 (LLM) 來進行操作,並同時介紹 RAG 這
個觀念,讓大家可以更了解生成式 AI 的運作方式。並於最後的幾天,會實際帶領大家使用 LangChain 搭配 RAG 的方式,來設計出一個簡易的問答機器人。
本次會使用到的資源除了程式碼跟套件會放置於本地之外,其他的都會採用雲端服務,比方說語言模型會直接串接 Hugging Face 的 API,而向量資料庫的部分
則會使用 Pinecone 這個服務,最大化的節省了想參與的朋友的本地資源。

RAG 簡介

RAG(Retrieval-Augmented Generation)是一種結合檢索(Retrieval)和生成(Generation)技術的混合方法,主要應用於自然語言處理(NLP)領域。它的目的是通過檢索相關信息來輔助語言模型的生成過程,以提高生成文本的準確性和相關性。RAG 通常用於需要豐富背景知識和高精確度回答的任務,例如問答系統、對話系統和文檔摘要等。

RAG 的主要特點和優勢包括:

  1. 檢索輔助:RAG 模型首先從大型資料庫中檢索與查詢相關的文檔或片段,這些檢索到的信息作為輔助資料輸入生成模型。
  2. 生成能力:在獲取相關背景信息後,生成模型(通常是 Transformer 類型的語言模型)會基於這些信息生成高質量的回應或文本。
  3. 提升準確性:通過結合檢索和生成技術,RAG 能夠更準確地生成回應,因為它利用了更豐富的上下文信息。
  4. 靈活應用:RAG 可以應用於多種 NLP 任務,如開放域問答、知識增強對話系統和信息摘要等。
  5. 動態更新:由於 RAG 的檢索模塊可以動態更新資料庫,因此它可以即時利用最新的信息,保持回答的時效性和準確性。

RAG 的運作過程大致如下:

  1. 檢索階段:模型接收到用戶的查詢後,首先在資料庫中檢索與該查詢相關的文檔或信息片段。
  2. 生成階段:將檢索到的相關信息作為輔助輸入,語言模型基於這些信息生成回應或文本。

RAG 技術通過結合檢索和生成的優勢,克服了單一生成模型依賴訓練數據的局限性,提供了更為準確和上下文相關的生成結果。

LangChain 簡介

LangChain 是一個開源框架,旨在幫助開發者更容易地構建以語言模型為核心的應用程式。該框架提供了許多工具和組件,使得與大型語言模型進行整合和溝通
變得更加簡便。

LangChain 的主要特點包括:

  1. 鏈式操作:開發者可以將多個語言模型操作鏈接在一起,從而創建複雜的查詢和處理流程。
  2. 上下文管理:該框架能夠有效地管理對話的上下文,使模型能夠記住之前的對話內容,從而提高交互的連貫性。
  3. 資料存儲:LangChain 提供了與各種資料存儲系統的集成,方便開發者將語言模型的輸入和輸出存儲在資料庫中。
  4. API 整合:開發者可以輕鬆地將 LangChain 與其他 API 進行整合,從而擴展語言模型的功能和應用場景。

LangChain 的目標是通過這些功能和特點,使開發者能夠更高效地利用語言模型,構建更智能、更互動的應用程式。

OPENAI API KEY 申請

相信大家應該對於 OpenAI 這間公司不陌生,本次的鐵人賽會使用到 OpenAI 的 API 服務,不論是語言模型或是像量計算都會使用到,
因此需要申請一組 API KEY,可以進入 這個網址 並依照下圖點選生成屬於自己的 API Key:

OPENAI API KEY 申請

生成的 Key 只會出現在生成的當下,請妥善保存,如果遺失了則需要重新申請,並且不要將 Key 洩漏給他人,以免造成不必要的損失。

Pydantic-Settings

本次專案當中會使用到 pydantic-settings 這個套件來協助管理環境變數,讓我們可以透過取得物件的方式來快速進行一些資料的操作,下方附上範例程式碼:

使用前記得:poetry add pydantic-settings

from pathlib import Path
from pydantic_settings import BaseSettings, SettingsConfigDict

BASE_DIR = Path(__file__).resolve().parent


class EnvSettings(BaseSettings):
    OPENAI_API_KEY: str = None

    model_config = SettingsConfigDict(
        env_file=BASE_DIR / '.env',
        env_file_encoding='utf-8',
        extra='ignore'
    )

內容預告

明天我們就會帶領大家一步一步把 LangChain 與 Hugging Face 上的一些語言模型串接起來,並且會介紹 LangChain 當中的 Chain 該如何進行操作。


下一篇
Day 02 - 串接 GPT API 以及 langchain 常用的 message 類型
系列文
初探 Langchain 與 LLM:打造簡易問診機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
arguskao
iT邦新手 3 級 ‧ 2024-09-22 14:28:03

這個如果要當成客服系統,不知道使用API,價錢會不會很貴?

具體還是要看使用量,使用像是 OpenAI 這種商業用的 API 的話當你使用量上來後那個數字可能會是很可觀的,當服務慢慢起來後,可以再依照實際的使用量評估是不是要改為自己部署、fine tune自己的模型,但初期都還是使用外部資源會快些。

當然如果是想跟著範例跑的話,應該是不用太擔心,我目前儲值了 100 塊台幣已經用了半年是還沒用完。

arguskao iT邦新手 3 級 ‧ 2024-09-22 14:34:20 檢舉

這也太便宜了吧...

自己部署難道不需要用到OpenAI的Key了嗎?
因為之前一直想弄一套客服系統,但是考慮到使用者多的話,肯定破產
您的意思是之後也可以變成免費的嗎?

謝謝您的文章

如果你有辦法自己 fine tune 出想要的模型的話,你可能就需要負擔自己的機器成本、電費等等,也不能說等於免費,最佳解還是要找個平衡點/images/emoticon/emoticon37.gif

我要留言

立即登入留言